<?php
/**
 * Created by PhpStorm.
 * User: 554665488
 * Date: 2018-6-20
 * Time: 10:04
 * @description:使用数据库映射模式 工厂模式  注册器模式 对象化操作数据库
 * @Author: yfl
 * @QQ 554665488
 */

define('BASEDIR', __DIR__ . '/..');


require_once __DIR__ . '/Loader.php';
spl_autoload_register("\\DesignModel\\Loader::autoload");


//$user = new \DesignModel\ORM\model\User(1);
//
//var_dump($user->name='yflyfl');

class userController
{
    public function index()
    {
        //获得数据库一条记录的对象
//        $user = new \DesignModel\ORM\model\User(1);   //这里在两个方法中要同时对同一对象进行操作 但是实例化了两次对象对象 方式一
        $user = \DesignModel\Factory::getUser(1);  //使用工厂模式 和 注册器模式 解决 实例化两个一样对象的模式  方式二

        $user->name = 'yfl8899';
        var_dump($user,1);
        $this->save();
    }

    public function save()
    {

//        $user = new \DesignModel\ORM\model\User(1);   //1.这里是栈结构 先进后出 后进先出 2.析构方法先销毁后创建的的对象 方式一
        $user = \DesignModel\Factory::getUser(1);    //使用工厂模式 和 注册器模式 解决 实例化两个一样对象的模式 方式二
                                                         //  使用方式一 的时候创建了两个对象 User模型的析构方法先先销毁后创建的对象 所以最终的name值为yfl8899
                                                        //使用方式二 只创建了一个对象 再第二次修改name值的时候 析构方法中执行更新操作保存的值是yfl123
        $user->name = 'yfl123';
        var_dump($user,2);
//        echo '111';
    }
}

$obj = new userController();
$obj->index();